1. Technical Field
The present disclosure relates to storage-class memory and, more specifically, to durable transactions with storage-class memory.
2. Discussion of Related Art
In modern computer systems, there is often a need for multiple machines, multiple microprocessors, and/or multiple microprocessor cores to access a shared memory. Under such an arrangement, problems may emerge as multiple computing entities try to access the same file from the same memory at the same time. For example, two entities may desire to write to a file at the same time or one entity may desire to read a file as another entity is writing to it. The possibility therefor may exist that files become corrupted or overwritten in such a way that valid changes are lost.
One approach to managing memory access by multiple computing entities is referred to as transactional memory (TM). TM systems are designed to control access to memory so that memory transactions remain sequential and accurate. TM systems are commonly used, for example, in banking so that account balances may be accurately maintained even as transactions to bank accounts may be initiated from multiple sources at substantially the same time. Additionally, TM systems may permit a transacting source to perform a transaction in multiple steps, for example, funds from one bank account may be transferred to another bank account by first debiting the funds from the first account and then adding the funds to the second account.
TM systems generally incorporate volatile memory such as DRAM as a main memory. Volatile memory such as DRAM may be well suited for use in TM systems as it has sufficient speed to process transactions without delay. However, as volatile memory may lose its contents upon power failure, database systems that incorporate transactional memory generally maintains one or more transaction logs so that in the event of a loss of memory, due to power failure or other reasons, the correct state of the main memory may be restored by reconciling the main memory with the logs.